home *** CD-ROM | disk | FTP | other *** search
/ Zoom 2 / Zoom - Release 2 (1996)(Active Software)[!].iso / programming / assembly / ex4_number3 / dc_intro032+.s / dc_intro032+.s
Encoding:
Text File  |  1992-09-02  |  26.8 KB  |  1,324 lines

  1.  
  2.     ******************************************
  3.     *                     *
  4.     *        © Dual Crew 1993          *
  5.     *                     *
  6.     ******************************************
  7.  
  8. *************>  Cøde :    Nzø
  9. *************>    GFX  :    Red Devil
  10. *************>    Music:    MutLeY
  11.  
  12.         Section    test,Code_C
  13.  
  14. ;        opt    c-,o+,w+
  15.  
  16. lines1        equ    180
  17. lines2        equ    46
  18. lines3        equ    17
  19. lines4        equ    31
  20.  
  21. charhi        equ    16
  22.  
  23. music        equ    1
  24.         
  25.         incdir "df0:"
  26.         include    Blitter_E.s
  27.  
  28.         bra.w    program
  29.         even
  30.         
  31.         dc.b    10,10,10,10,'Thats it.. get the fuckin file editor '
  32.         dc.b    'out.. by a book and learn to code shitty intros!! '
  33.         dc.b    10,10,10,10,10
  34.         cnop    0,4
  35.  
  36. program        lea    $dff000,a5
  37.         
  38.         bsr    killsysx
  39.  
  40.         bsr    init_copper1
  41.  
  42.         IFNE    music
  43.         moveq    #0,d0            ;0-8
  44.         bsr    mt_init
  45.         ENDC
  46.  
  47.         lea    newlevel3(pc),a1
  48.         move.l    _VBR(pc),a0
  49.         move.l    a1,$6c(a0)
  50.         
  51.         move    #$c020,$9a(a5)
  52.         
  53.         bsr    routines
  54.         bsr    intro
  55.  
  56.         lea    copperlist(pc),a0
  57.         move.l    a0,$80(a5)
  58.  
  59.         move    #1,allow_wr
  60.         move    #1,allow_sc
  61.  
  62. beam0        move.l    4(a5),d7
  63.         and.l    #$1ff00,d7
  64.         cmp.l    #$12000,d7
  65.         bne.s    beam0
  66.  
  67.         bsr.s    routines
  68.  
  69.         btst    #6,$bfe001
  70.         bne.s    beam0
  71.  
  72.         lea    systemsave(pc),a4
  73.  
  74.         move.l    _VBR(pc),a0
  75.         move.l    12(a4),$68(a0)
  76.         move.l    16(a4),$6c(a0)
  77.  
  78.         move    8(a4),$9a(a5)
  79.         move    10(a4),$96(a5)
  80.         move.l    (a4),$80(a5)
  81.         move.l    4(a4),$84(a5)
  82.  
  83. fadecli2    move.l    4(a5),d7
  84.         and.l    #$1ff00,d7
  85.         cmp.l    #$13000,d7
  86.         bne.s    fadecli2
  87.         moveq    #1,d5
  88.         bsr    mt_music
  89.         lea    systemsave(pc),a4
  90.         move.l    4(a4),a0
  91.         lea    6(a0),a1
  92.         lea    savepal(pc),a0
  93.         moveq    #4-1,d7
  94.         moveq    #6,d6
  95.         bsr    fader
  96.         tst    d1
  97.         beq.s    fadecli2
  98.  
  99.         IFNE    music
  100.         bsr    mt_end
  101.         ENDC
  102.  
  103.         moveq    #0,d0
  104.         rts
  105.  
  106. routines    bsr    wave
  107.         bsr    manager
  108.         bsr    animate_spr        
  109.         bsr    writer
  110.         bsr    copy
  111.         bsr    clear
  112.         rts
  113.  
  114. *****************************************************************************
  115.  
  116. newlevel3    move    sr,-(sp)        ;sr onto stack
  117.         movem.l    d0-d7/a0-a6,-(sp)    ;all regs to stack
  118.         lea    $dff000,a5
  119.         move     #$20,$9c(a5)
  120.  
  121.         bsr    scroll        
  122.  
  123.         IFNE    music
  124.         moveq    #0,d5
  125.         bsr    mt_music
  126.         ENDC
  127.     
  128.         movem.l    (sp)+,d0-d7/a0-a6
  129.         move    (sp)+,sr
  130.         rte
  131.  
  132.  
  133.  
  134. init_copper1    lea    systemsave(pc),a4
  135.         move.l    4(a4),a0
  136.         lea    6(a0),a1
  137.         lea    savepal(pc),a0
  138.         move    (a1),(a0)+
  139.         move    4(a1),(a0)+
  140.         move    8(a1),(a0)+
  141.         move    12(a1),(a0)+
  142.         bsr    update3
  143.         lea    multable(pc),a0
  144.         move    #144-1,d1
  145.         moveq    #0,d0
  146. multab        move    d0,(a0)+
  147.         add    #44,d0
  148.         dbf    d1,multab
  149.         lea    screen,a2
  150. kccp        clr.l    (a2)+
  151.         cmp.l    #screen+$10000,a2
  152.         bne.s    kccp        
  153.         lea    logo,a0
  154.         lea    screen+((44*4)*6),a1
  155. rtt        move    (a0)+,(a1)+
  156.         cmp.l    #logoend,a0
  157.         blo.s    rtt
  158.         lea    sprxpos(pc),a4        ;initialise sonic
  159.         move.l    #$017000d0,(a4)
  160.         lea    sprframe(pc),a4
  161.         clr    (a4)
  162.         lea    screen,a0
  163.         lea    bits1(pc),a1
  164.         lea    bits1_1(pc),a2
  165.         moveq    #4-1,d1
  166.         move.l    a0,d0
  167. setloop1    move    d0,6(a1)
  168.         move    d0,6(a2)
  169.         swap    d0
  170.         move    d0,2(a1)
  171.         move    d0,2(a2)
  172.         swap    d0
  173.         lea    8(a1),a1
  174.         lea    8(a2),a2
  175.         add.l    #44,d0
  176.         dbf    d1,setloop1
  177.         lea    scrollbuffer+2,a0
  178.         lea    bits2(pc),a1
  179.         moveq    #2-1,d1
  180.         move.l    a0,d0
  181. setloop2    move    d0,6(a1)
  182.         swap    d0
  183.         move    d0,2(a1)
  184.         swap    d0
  185.         lea    8(a1),a1
  186.         add.l    #48*30,d0
  187.         dbf    d1,setloop2
  188.         lea    pal(pc),a0
  189.         lea    palette(pc),a1
  190.         lea    p16(pc),a2
  191.         moveq    #16-1,d0
  192. setp1        move    (a0),2(a1)
  193.         move    (a0)+,2(a2)
  194.         lea    4(a1),a1
  195.         lea    4(a2),a2
  196.         dbf    d0,setp1
  197.         lea    block1(pc),a0
  198.         move    #lines1-1,d1
  199.         move.l    #$1c09fffe,d2
  200. insert1        move.l    d2,(a0)+
  201.         move.l    #$00f00000,(a0)+
  202.         move.l    #$00f20000,(a0)+
  203.         move.l    #$01a00000,(a0)+        
  204.         add.l    #$01000000,d2
  205.         dbf    d1,insert1
  206.         lea    block2(pc),a0
  207.         moveq    #lines2-1,d1
  208.         move.l    #$d209fffe,d2
  209. insert2        move.l    d2,(a0)+
  210.         move.l    #$00e00000,(a0)+
  211.         move.l    #$00e20000,(a0)+
  212.         move.l    #$01820000,(a0)+        
  213.         add.l    #$01000000,d2
  214.         dbf    d1,insert2
  215.         lea    block3(pc),a0
  216.         moveq    #lines3-1,d1
  217.         move.l    #$2109fffe,d2
  218. insert3        move.l    d2,(a0)+
  219.         move.l    #$00e00000,(a0)+
  220.         move.l    #$00e20000,(a0)+
  221.         move.l    #$01800015,(a0)+
  222.         move.l    #$01820000,(a0)+
  223.         add.l    #$01000000,d2
  224.         dbf    d1,insert3
  225.         lea    blockblur(pc),a0
  226.         moveq    #lines4-1,d1
  227.         move.l    #$0209fffe,d2
  228. insert4        move.l    #$00e40000,(a0)+
  229.         move.l    #$00e60000,(a0)+
  230.         move.l    d2,(a0)+
  231.         add.l    #$01000000,d2
  232.         dbf    d1,insert4
  233.         lea    cline(pc),a0
  234.         move.l    #$01800015,d0
  235.         moveq    #59-1,d1
  236. setcline    move.l    d0,(a0)+
  237.         dbf    d1,setcline
  238.         move.l    #$01800015,d0
  239.         move.l    d0,(a0)
  240.         bset    #1,$bfe001
  241.         rts    
  242.  
  243. *****************************************************************************
  244.  
  245. *    Intro part
  246.  
  247. *****************************************************************************
  248.  
  249. intro        move.l    #250-1,d6    
  250. intro1        move.l    4(a5),d7
  251.         and.l    #$1ff00,d7
  252.         cmp.l    #$13000,d7
  253.         bne.s    intro1
  254.         dbf    d6,intro1
  255.  
  256.         bsr    fadecli
  257.         lea    copperlist2(pc),a0
  258.         move.l    a0,$80(a5)
  259.         clr    $88(a5)
  260.         move    #$83e0,$96(a5)
  261.         bsr.s    makeline
  262.         bsr.s    moveline
  263.         addq    #1,allow_so
  264.         bsr    fadelogoup
  265.  
  266.         move.l    #250-1,d6    
  267. intro2        move.l    4(a5),d7
  268.         and.l    #$1ff00,d7
  269.         cmp.l    #$13000,d7
  270.         bne.s    intro2
  271.         dbf    d6,intro2
  272.  
  273. frame        movem.l    d6/d7,-(sp)
  274.         moveq    #5,d6
  275. frame1        move.l    4(a5),d7
  276.         and.l    #$1ff00,d7
  277.         cmp.l    #$12000,d7
  278.         bne.s    frame1
  279.         dbf    d6,frame1
  280.         movem.l    (sp)+,d6/d7
  281.         rts
  282.  
  283. makeline    lea    cline(pc),a0
  284.         moveq    #59-1,d0
  285. lineup        move    #$fff,2(a0)
  286.         lea    4(a0),a0
  287.         bsr.s    frame
  288.         dbf    d0,lineup
  289.         rts
  290.  
  291. moveline    lea    upline(pc),a0
  292.         move    #$100,d0
  293.         move    #$fff,6(a0)
  294.         move    #$004,14(a0)
  295. bump        sub    d0,(a0)
  296.         sub    d0,8(a0)
  297.         bsr.s    frame
  298.         cmp    #9,(a0)
  299.         bne.s    bump
  300.         rts
  301.  
  302. fadecli        move.l    4(a5),d7
  303.         and.l    #$1ff00,d7
  304.         cmp.l    #$13000,d7
  305.         bne.s    fadecli
  306.         lea    systemsave(pc),a4
  307.         move.l    4(a4),a0
  308.         lea    6(a0),a1
  309.         lea    blank(pc),a0
  310.         moveq    #4-1,d7
  311.         moveq    #6,d6
  312.         bsr.s    fader
  313.         tst    d1
  314.         beq.s    fadecli
  315.         rts
  316.  
  317. fadelogoup    move.l    4(a5),d7
  318.         and.l    #$1ff00,d7
  319.         cmp.l    #$13000,d7
  320.         bne.s    fadelogoup
  321.         lea    pal(pc),a0
  322.         lea    logopal+2(pc),a1
  323.         moveq    #16-1,d7
  324.         moveq    #6,d6
  325.         bsr.s    fader
  326.         tst    d1
  327.         beq.s    fadelogoup
  328.         rts
  329.  
  330. fader        movem.l    a0-a2/d0/d2-d7,-(sp)    
  331.         lea    fadebits(pc),a2
  332.         addq.b    #1,(a2)
  333.         cmp.b    (a2),d6
  334.         bne.s    ntt1
  335.         clr.b    (a2)
  336.         addq.b    #1,1(a2)
  337.         cmp.b    #16,1(a2)
  338.         bne.s    floop1
  339.         moveq    #-1,d1
  340.         clr.w    (a2)
  341.         bra.s    ntt2
  342. floop1        move    (a0)+,d6
  343.         move    (a1),d5
  344.         cmp    d5,d6
  345.         beq.s    nextc
  346.         bsr.s    mask        
  347.         cmp    d2,d3
  348.         blt.s    minus
  349.         neg    d4
  350. minus        sub    d4,(a1)
  351. nextc        lea    4(a1),a1
  352.         dbf    d7,floop1
  353. ntt1        moveq    #0,d1
  354. ntt2        movem.l    (sp)+,a0-a2/d0/d2-d7
  355.         rts
  356.  
  357.  
  358. mask        moveq    #0,d4
  359.         move    d6,d3
  360.         move    d5,d2
  361.         and    #$f,d6
  362.         and    #$f,d5
  363.         cmp.b    d5,d6
  364.         beq.s    okblue
  365.         addq    #1,d4
  366. okblue        move    d3,d6
  367.         move    d2,d5
  368.         and    #$f0,d6
  369.         and    #$f0,d5
  370.         cmp.b    d5,d6
  371.         beq.s    okgreen
  372.         add    #$10,d4
  373. okgreen        move    d3,d6
  374.         move    d2,d5
  375.         and    #$f00,d6
  376.         and    #$f00,d5
  377.         cmp    d5,d6
  378.         beq.s    okred
  379.         add    #$100,d4
  380. okred        rts
  381.  
  382. *****************************************************************************
  383.  
  384. *    Main part
  385.  
  386. *****************************************************************************
  387.  
  388. manager        tst    changing
  389.         beq.s    working
  390.         cmp    #1,changing
  391.         beq.s    colzdown
  392.         bra.s    colzup
  393.  
  394. working        lea    pauser(pc),a0
  395.         cmp    #50*5,(a0)
  396.         bne.s    not_ready
  397.         clr    (a0)
  398.         addq    #1,changing
  399.         bra.s    there
  400. not_ready    addq    #1,(a0)
  401. there        rts
  402.  
  403. colzdown    lea    gfx_offset(pc),a0
  404.         add.l    #44,(a0)
  405.         cmp.l    #44*144,(a0)
  406.         bne.s    waitamo
  407.         bsr.s    update3
  408.         addq    #1,changing
  409. waitamo        rts
  410.  
  411. colzup        lea    gfx_offset(pc),a0
  412.         sub.l    #44,(a0)
  413.         tst.l    (a0)
  414.         bne.s    waitamo2
  415.         clr    changing
  416. waitamo2    rts
  417.  
  418. update3        moveq    #4-1,d7                ;fetch sinedata
  419.         lea    vbar_datalist2(pc),a1
  420.         lea    wave_chan1(pc),a2
  421.         move    (a1),d0
  422.         cmp    #33,2(a1,d0.w)
  423.         bne.s    ok_v91
  424.         clr    (a1)
  425.         bra.s    update3
  426. ok_v91        addq    #8,(a1)
  427.         lea    2(a1,d0.w),a1
  428. setx        move    (a1)+,(a2)+
  429.         dbf    d7,setx
  430. update4        moveq    #0,d0
  431.         lea    which_gfx(pc),a0
  432.         lea    fx_gfx(pc),a1
  433.         move.b    (a0),d0
  434.         tst.b    1(a0,d0.w)
  435.         bpl.s    ok_v92
  436.         clr.b    (a0)
  437.         bra.s    update4
  438. ok_v92        move.b    1(a0,d0.w),d0
  439.         addq.b    #1,(a0)
  440.         tst.b    d0
  441.         bne.s    set1
  442.         move.l    #fx_gfx1,(a1)
  443.         bra.s    update5
  444. set1        move.l    #fx_gfx2,(a1)
  445. update5        moveq    #0,d0
  446.         lea    which_offset(pc),a0
  447.         lea    offset(pc),a1
  448.         move.b    (a0),d0
  449.         tst.b    1(a0,d0.w)
  450.         bpl.s    ok_v93
  451.         clr.b    (a0)
  452.         bra.s    update5
  453. ok_v93        move.b    1(a0,d0.w),1(a1)
  454.         addq.b    #1,(a0)
  455.         lea    col_offsets1(pc),a0
  456.         lea    clist_offset1(pc),a1
  457.         bsr.s    update6
  458.         lea    col_offsets2(pc),a0
  459.         lea    clist_offset2(pc),a1
  460.         bsr.s    update6
  461.         rts
  462.  
  463. update6        moveq    #0,d0
  464.         move    (a0),d0
  465.         tst    2(a0,d0.w)
  466.         bpl.s    ok_v94
  467.         clr    (a0)
  468.         bra.s    update6
  469. ok_v94        move    2(a0,d0.w),d0
  470.         move.l    d0,(a1)
  471.         addq    #2,(a0)
  472.         rts
  473.  
  474. wave        lea    block1(pc),a1
  475.         lea    wavecols(pc),a6
  476.         move.l    gfx_offset(pc),d4
  477.         move.l    (a6),a4
  478.         move.l    4(a6),a6
  479.         add.l    clist_offset1(pc),a4
  480.         add.l    clist_offset2(pc),a6
  481.         lea    sine,a3
  482.         lea    wave_crp(pc),a2
  483.         move    (a2),d6
  484.         move    wave_chan1(pc),d7
  485.         add    d7,(a2)
  486.         move    2(a2),d5
  487.         move    wave_chan2(pc),d7
  488.         add    d7,2(a2)
  489.         move    #lines1-1,d7
  490. loop55        move    d6,d0
  491.         add    wave_freq1(pc),d6
  492.         and    #$1ff,d0
  493.         add    d0,d0
  494.         move    (a3,d0.w),d0
  495.         move    d5,d2
  496.         add    wave_freq2(pc),d5
  497.         and    #$1ff,d2
  498.         add    d2,d2
  499.         add    (a3,d2.w),d0
  500.         move    (a3,d2.w),d2
  501.         add    d2,d0
  502.         lsr    #3,d0
  503.         movem.l    d0/d5/d6,-(sp)
  504.         bsr    blob
  505.         movem.l    (sp)+,d0/d5/d6
  506.         dbf    d7,loop55
  507.  
  508.         lea    fake(pc),a1
  509.         moveq    #2-1,d7
  510. adjust1        move    d6,d0
  511.         add    wave_freq1(pc),d6
  512.         and    #$1ff,d0
  513.         add    d0,d0
  514.         move    (a3,d0.w),d0
  515.         move    d5,d2
  516.         add    wave_freq2(pc),d5
  517.         and    #$1ff,d2
  518.         add    d2,d2
  519.         add    (a3,d2.w),d0
  520.         move    (a3,d2.w),d2
  521.         add    d2,d0
  522.         lsr    #3,d0
  523.         movem.l    d0/d5/d6,-(sp)
  524.         bsr    blob2
  525.         movem.l    (sp)+,d0/d5/d6
  526.         dbf    d7,adjust1
  527.  
  528.         lea    block2(pc),a1
  529.         move    #lines2-1,d7
  530. loop45        move    d6,d0
  531.         add    wave_freq1(pc),d6
  532.         and    #$1ff,d0
  533.         add    d0,d0
  534.         move    (a3,d0.w),d0
  535.         move    d5,d2
  536.         add    wave_freq2(pc),d5
  537.         and    #$1ff,d2
  538.         add    d2,d2
  539.         add    (a3,d2.w),d0
  540.         move    (a3,d2.w),d2
  541.         add    d2,d0
  542.         lsr    #3,d0
  543.         movem.l    d0/d5/d6,-(sp)
  544.         bsr    blob
  545.         movem.l    (sp)+,d0/d5/d6
  546.         dbf    d7,loop45
  547.  
  548.         lea    blockblur(pc),a1
  549.         move    #lines4-1,d7
  550. adjust2        move    d6,d0
  551.         add    wave_freq1(pc),d6
  552.         and    #$1ff,d0
  553.         add    d0,d0
  554.         move    (a3,d0.w),d0
  555.         move    d5,d2
  556.         add    wave_freq2(pc),d5
  557.         and    #$1ff,d2
  558.         add    d2,d2
  559.         add    (a3,d2.w),d0
  560.         move    (a3,d2.w),d2
  561.         add    d2,d0
  562.         lsr    #3,d0
  563.         movem.l    d0/d5/d6,-(sp)
  564.         bsr    blob3
  565.         movem.l    (sp)+,d0/d5/d6
  566.         dbf    d7,adjust2
  567.  
  568.         lea    block3(pc),a1
  569.         move    #lines3-1,d7
  570. loop56        move    d6,d0
  571.         add    wave_freq1(pc),d6
  572.         and    #$1ff,d0
  573.         add    d0,d0
  574.         move    (a3,d0.w),d0
  575.         move    d5,d2
  576.         add    wave_freq2(pc),d5
  577.         and    #$1ff,d2
  578.         add    d2,d2
  579.         add    (a3,d2.w),d0
  580.         move    (a3,d2.w),d2
  581.         add    d2,d0
  582.         lsr    #3,d0
  583.         movem.l    a0/d0/d5/d6,-(sp)
  584.         lea    multable(pc),a0
  585.         bsr.s    blob4
  586.         movem.l    (sp)+,a0/d0/d5/d6
  587.         dbf    d7,loop56
  588.         rts
  589.  
  590. blob4        move    d0,d6
  591.         move    offset(pc),d3
  592.         beq.s    skip_lsr4
  593.         lsr    d3,d6
  594. skip_lsr4    add    d6,d6
  595.         add    d0,d0
  596.         move.l    fx_gfx(pc),d5
  597.         add    (a0,d0.w),d5
  598.         sub.l    d4,d5
  599.         move    d5,10(a1)
  600.         swap    d5
  601.         move    d5,6(a1)    
  602.         move    (a6,d6.w),18(a1)
  603.         lea    20(a1),a1
  604.         rts
  605.  
  606. blob        move    d0,d6
  607.         move    offset(pc),d3
  608.         beq.s    skip_lsr
  609.         lsr    d3,d6
  610. skip_lsr    add    d6,d6
  611.         add    d0,d0
  612.         move.l    fx_gfx(pc),d5
  613.         add    multable(pc,d0.w),d5
  614.         sub.l    d4,d5
  615.         move    d5,10(a1)
  616.         swap    d5
  617.         move    d5,6(a1)    
  618.         move    (a6,d6.w),14(a1)
  619.         lea    16(a1),a1
  620.         rts
  621.         
  622. blob2        move    d0,d6
  623.         move    offset(pc),d3
  624.         beq.s    skip_lsr2
  625.         lsr    d3,d6
  626. skip_lsr2    add    d0,d0
  627.         add    d6,d6
  628.         move.l    fx_gfx(pc),d5
  629.         add    multable(pc,d0.w),d5
  630.         sub.l    d4,d5
  631.         move    d5,14(a1)
  632.         swap    d5
  633.         move    d5,10(a1)    
  634.         move    (a6,d6.w),18(a1)
  635.         lea    52(a1),a1
  636.         rts
  637.  
  638. blob3        add    d0,d0
  639.         move.l    fx_gfx(pc),d5
  640.         add    multable(pc,d0.w),d5
  641.         sub.l    d4,d5
  642.         move    d5,6(a1)
  643.         swap    d5
  644.         move    d5,2(a1)    
  645.         lea    12(a1),a1
  646.         rts
  647.  
  648. multable    ds.w    144
  649.  
  650.  
  651. writer        tst    allow_wr
  652.         beq    skip_wr
  653.         tst    npause
  654.         beq.s    cont1
  655.         subq    #1,npause
  656.         bra    skip_wr
  657. cont1        movem.l    a0-a4/d0-d7,-(sp)
  658.         move.l    textptr(pc),a2
  659.         lea    textpos(pc),a3
  660. next        cmp.b    #-2,(a2)
  661.         bne.s    not_page
  662.         moveq    #0,d0
  663.         move.b    1(a2),d0
  664.         mulu    #50,d0
  665.         move    d0,npausetemp
  666.         clr.l    (a3)
  667.         clr    allow_wr
  668.         move    #1,allow_co
  669.         lea    text(pc),a2    
  670.         bra    done
  671. not_page    cmp.b    #-1,(a2)
  672.         bne.s    not_looped
  673.         moveq    #0,d0
  674.         move.b    1(a2),d0
  675.         mulu    #50,d0
  676.         move    d0,npausetemp
  677.         clr.l    (a3)
  678.         clr    allow_wr
  679.         move    #1,allow_co
  680.         lea    2(a2),a2    
  681.         bra.s    done
  682. not_looped    cmp.b    #13,(a2)
  683.         bne.s    no_return
  684.         clr    (a3)
  685.         add    #(44*4)*charhi,2(a3)
  686.         lea    1(a2),a2
  687.         bra.s    next
  688. no_return    move.b    (a2)+,d0
  689.         sub.b    #32,d0
  690.         and    #$ff,d0
  691.         add    d0,d0
  692.         lea    font2,a0
  693.         lea    charbuffer,a1
  694.         lea    (a0,d0.w),a0
  695.         move    (a3),d5
  696.         move    2(a3),d6
  697.         lea    (a1,d5.w),a1
  698.         lea    (a1,d6.w),a1
  699.         move.l    #-1,bltafwm(a5)
  700.         move.l    #$09f00000,bltcon0(a5)
  701.         move    #(944/8)-2,bltamod(a5)
  702.         move    #44-2,bltdmod(a5)
  703.         move.l    a0,bltapth(a5)
  704.         move.l    a1,bltdpth(a5)
  705.         move    #(64*(16*4))+1,bltsize(a5)
  706.         bsr    waitbli
  707.         addq    #2,(a3)
  708. done        move.l    a2,textptr
  709.         movem.l    (sp)+,a0-a4/d0-d7
  710. skip_wr        rts
  711.  
  712. copy        tst    allow_co
  713.         beq    skip_co
  714.         tst    npause
  715.         beq.s    cont2
  716.         subq    #1,npause
  717.         bra    skip_co
  718. cont2        moveq    #5-1,d7
  719.         moveq    #0,d6
  720. blinds1        lea    charbuffer,a0
  721.         lea    screen+(176*100),a1
  722.         lea    copy_offset(pc),a2
  723.         move.l    (a2),d0
  724.         lea    (a0,d0.l),a0
  725.         lea    (a1,d0.l),a1
  726.         lea    (a0,d6.l),a0
  727.         lea    (a1,d6.l),a1
  728.         move.l    #-1,bltafwm(a5)
  729.         move.l    #$09f00000,bltcon0(a5)
  730.         moveq    #0,d0
  731.         move    d0,bltamod(a5)
  732.         move    d0,bltdmod(a5)
  733.         move.l    a0,bltapth(a5)
  734.         move.l    a1,bltdpth(a5)
  735.         move    #(64*(1*4))+22,bltsize(a5)
  736.         bsr    waitbli
  737.         add.l    #(44*4)*16,d6
  738.         dbf    d7,blinds1
  739.         add.l    #44*4,(a2)
  740.         cmp.l    #(44*4)*16,(a2)
  741.         bne.s    skip_co
  742.         clr.l    (a2)
  743.         clr    allow_co
  744.         move    #1,allow_cl
  745.         move    npausetemp(pc),npause        ;onscreen
  746. skip_co        rts
  747.  
  748. clear        tst    allow_cl
  749.         beq.s    skip_cl
  750.         tst    npause
  751.         beq.s    cont3
  752.         subq    #1,npause
  753.         bra.s    skip_cl
  754. cont3        move    #1,allow_wr
  755.         moveq    #5-1,d7
  756.         moveq    #0,d6
  757. blinds2        lea    screen+(176*100),a1
  758.         lea    (a1,d6.l),a1
  759.         lea    copy_offset(pc),a2
  760.         move.l    (a2),d0
  761.         lea    (a1,d0.l),a1
  762.         move.l    #-1,bltafwm(a5)
  763.         move.l    #$01000000,bltcon0(a5)
  764.         clr    bltdmod(a5)
  765.         move.l    a1,bltdpth(a5)
  766.         move    #(64*(1*4))+22,bltsize(a5)
  767.         bsr    waitbli
  768.         add.l    #(44*4)*16,d6
  769.         dbf    d7,blinds2
  770.         add.l    #44*4,(a2)
  771.         cmp.l    #(44*4)*16,(a2)
  772.         bne.s    skip_cl
  773.         clr.l    (a2)
  774.         clr    allow_cl
  775. skip_cl        rts
  776.  
  777. scroll        tst    allow_sc
  778.         beq.s    nosc
  779.         lea    scrolled(pc),a0
  780.         addq    #1,(a0)
  781.         cmp    #4,(a0)
  782.         bne.s    normals
  783.         clr    (a0)
  784.         bsr.s    newchar
  785. normals        lea    scrollbuffer,a1
  786.         lea    2(a1),a0
  787.         moveq    #1,d7
  788. plane4        movem.l    a0-a1,-(sp)
  789.         move.l    #-1,bltafwm(a5)
  790.         move.l    #$c9f00000,bltcon0(a5)
  791.         moveq    #48-46,d0
  792.         move    d0,bltamod(a5)
  793.         move    d0,bltdmod(a5)
  794.         move.l    a0,bltapth(a5)
  795.         move.l    a1,bltdpth(a5)
  796.         move    #(64*30)+23,bltsize(a5)
  797.         bsr    waitbli
  798.         movem.l    (sp)+,a0-a1
  799.         lea    48*30(a1),a1
  800.         lea    48*30(a0),a0
  801.         dbf    d7,plane4
  802. nosc        rts
  803.  
  804. newchar        movem.l    a0-a4/d0-d7,-(sp)
  805.         move.l    scrollpoint(pc),a2
  806.         tst.b    (a2)
  807.         bpl.s    no_loop
  808.         lea    scroller(pc),a2
  809. no_loop        move.b    (a2)+,d0
  810.         move.l    a2,scrollpoint
  811.         cmp.b    #'b',d0
  812.         bne.s    notr
  813.         moveq    #8,d0
  814.         bra.s    r
  815. notr        cmp.b    #'a',d0
  816.         bne.s    notDC
  817.         moveq    #4,d0
  818.         bra.s    r        
  819. notDC        sub.b    #32,d0
  820.         and    #$ff,d0
  821.         add    d0,d0
  822. r        lea    font1,a0
  823.         lea    scrollbuffer+44,a1
  824.         lea    (a0,d0.w),a0
  825.         moveq    #1,d7
  826. plane2        movem.l    a0-a1,-(sp)
  827.         move.l    #-1,bltafwm(a5)
  828.         move.l    #$09f00000,bltcon0(a5)
  829.         move    #(944/8)-2,bltamod(a5)
  830.         move    #48-2,bltdmod(a5)
  831.         move.l    a0,bltapth(a5)
  832.         move.l    a1,bltdpth(a5)
  833.         move    #(64*30)+1,bltsize(a5)
  834.         bsr.s    waitbli
  835.         movem.l    (sp)+,a0-a1
  836.         lea    48*30(a1),a1
  837.         lea    $dd4(a0),a0
  838.         dbf    d7,plane2
  839.         movem.l    (sp)+,a0-a4/d0-d7
  840.         rts
  841.  
  842. waitbli        move    #$8400,$96(a5)
  843. wb1        btst    #14,2(a5)
  844.         bne.s    wb1
  845. wb2        btst    #14,2(a5)
  846.         bne.s    wb2
  847.         move    #$400,$96(a5)
  848.         rts
  849.  
  850. animate_spr    tst    allow_so
  851.         beq.s    there1
  852.  
  853.         lea    sprxpos(pc),a4        ;initialise sonic
  854.         subq    #2,(a4)
  855.         cmp    #$120,(a4)
  856.         bne.s    there1
  857.         clr    allow_so
  858.  
  859. there1        lea    framecount(pc),a4    
  860.         addq    #1,(a4)        ;just makes sure frame is
  861.         cmp    #5,(a4)        ;updated at a certain rate.
  862.         bne.s    noadvframe
  863.         clr    (a4)
  864.         lea    sprframe(pc),a4
  865.         move.l    splist(pc),a2
  866.         cmp.b    #-1,(a2)
  867.         bne.s    nol8
  868.         lea    spdat(pc),a2        
  869. nol8        move.b    (a2)+,1(a4)
  870.         move.l    a2,splist
  871. noadvframe    moveq    #0,d0        ;find our sprite frame..
  872.         move    sprframe(pc),d0
  873.         move.l    #(200*6),d1
  874.         muls    d0,d1
  875.         lea    spritedata,a1
  876.         lea    (a1,d1.l),a1
  877.         bsr    spritepoint    ;set the copperlist        
  878.         move    sprxpos(pc),d0
  879.         move    sprypos(pc),d1
  880.         add    #$70,d0        ;add a little..
  881.         moveq    #48,d4        ;sprite height
  882.         moveq    #0,d2        ;sprite control word
  883.         move.b    d1,d2        ;put low byte of sprypos in con
  884.         asl    #8,d2        ;move along
  885.         move    d0,d3        ;keep sprxpos safe
  886.         asr    #1,d3        ;get rid of lsb
  887.         move.b    d3,d2        ;put low byte of sprxpos in con
  888.         swap    d2        ;swap control regs
  889.         move    d1,d3        ;keep sprypos
  890.         add    d4,d3        ;add height to sprypos for end.
  891.         move.b    d3,d2        ;put low byte of vend in con
  892.         asl    #8,d2        ;move along
  893.         btst    #0,d0        ;check sprxpos lsb
  894.         beq.s    nosethlow
  895.         or    #1,d2        ;put lsb status into con
  896. nosethlow    btst    #8,d1        ;check sprypos msb
  897.         beq.s    nosetvhigh
  898.         or    #4,d2        ;put msb status into con
  899. nosetvhigh    btst    #8,d3        ;check vertend msb
  900.         beq.s    nosetvend
  901.         or    #2,d2        ;put vend msb into control
  902. nosetvend    bclr    #7,d2        ;set no attach
  903.         move.l    d2,(a1)
  904.         bset    #7,d2        ;set attach
  905.         move.l    d2,200(a1)
  906.         add.l    #$00080000,d2
  907.         bclr    #7,d2        ;set no attach
  908.         move.l    d2,400(a1)
  909.         bset    #7,d2        ;set attach
  910.         move.l    d2,600(a1)
  911.         add.l    #$00080000,d2
  912.         bclr    #7,d2        ;set no attach
  913.         move.l    d2,800(a1)
  914.         bset    #7,d2        ;set attach
  915.         move.l    d2,1000(a1)
  916.         rts
  917.  
  918. spritepoint    lea    spritelist1(pc),a0    
  919.         bsr.s    setemup
  920.         lea    spritelist2(pc),a0    ;this routine just sets
  921. setemup        move.l    a1,-(sp)          ;the copperlist sprite
  922.         moveq    #6-1,d7              ;pointers...
  923. setsprites    move.l    a1,d0     
  924.         move    d0,6(a0)     
  925.         swap    d0     
  926.         move    d0,2(a0)     
  927.         lea    8(a0),a0
  928.         lea    200(a1),a1
  929.         dbf    d7,setsprites     
  930.         move.l    (sp)+,a1
  931.         rts
  932.  
  933.         IFNE    music
  934.         include    st-replay.s
  935.         ENDC
  936.  
  937. killsysx    move.l    $4.w,a6
  938.         lea    gfxname(pc),a1
  939.         moveq    #0,d0
  940.         jsr    -552(a6)
  941.         move.l    d0,a6
  942.         move    #$8000,d7    
  943.  
  944.         lea    systemsave(pc),a4
  945.         move.l    $26(a6),(a4)
  946.         move.l    $32(a6),4(a4)
  947.  
  948.         move    $1c(a5),d0
  949.         move    2(a5),d1
  950.         or    d7,d0
  951.         and    #$3ff,d1
  952.         or    d7,d1
  953.         move    d0,$8(a4)
  954.         move    d1,$a(a4)
  955.  
  956.         move    #$7fff,$9a(a5)
  957.         move    #$20,$96(a5)
  958.  
  959.         bsr    _GetVBR
  960.  
  961.         move.l    _VBR(pc),a0
  962.         move.l    $68(a0),12(a4)
  963.         move.l    $6c(a0),16(a4)
  964.         rts
  965.  
  966.  
  967. *******************************************************************************
  968. * GetVBR
  969. * ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  970. * Gets current vectorbase register address (VBR)
  971. *
  972. * INPUTS:    None.
  973. * OUTPUTS:    d0=VBR Address
  974. *******************************************************************************
  975.  
  976. _GetVBR:    movem.l    d1-d7/a0-a6,-(a7)
  977.         move.l    4.w,a6
  978.         moveq    #15,d7
  979.         and.w    296(a6),d7
  980.         beq.s    Basic68k
  981.         lea    PutBase(pc),a5
  982.         jsr    -30(a6)
  983. Basic68k:    lea    _VBR(pc),a5        ; ptr to base...
  984.         move.l    d7,(a5)            ; save it for later.
  985.         move.l    d7,d0
  986. BadExec:    movem.l    (a7)+,d1-d7/a0-a6
  987.         rts
  988.  
  989. PutBase        movec    vbr,d7
  990. DoException:    rte                ; back to userstate...
  991.  
  992. _VBR:        dc.l    0            ;storage of vectorbase
  993.         even    
  994.  
  995. ******************************************************************************
  996.  
  997.  
  998. gfxname        dc.b    "graphics.library",0
  999.         even
  1000.  
  1001. systemsave    ds.l    5
  1002.  
  1003. *****************************************************************************
  1004.  
  1005. splist        dc.l    spdat
  1006. spdat        REPT    3
  1007.         dc.b    0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7
  1008.         ENDR
  1009.         REPT    2
  1010.         dc.b    8,9,10,11,12,13,14,15,8,9,10,11,12,13,14,15
  1011.         ENDR
  1012.         dc.b    -1
  1013.         EVEN
  1014.  
  1015. textptr        dc.l    text0
  1016.  
  1017. *Textwriter options : -1 to end a page and pause value (secs) after!
  1018. *              -2 to end a page and pause value as above and loop
  1019. *              13 to next line
  1020.  
  1021. *alignment               123456789012345678901
  1022.  
  1023. text0        dc.b    "                     ",13
  1024.         dc.b    "                     ",13
  1025.         dc.b    "                     ",13
  1026.         dc.b    "                     ",13
  1027.         dc.b    "                     ",13
  1028.         dc.b    -1,6
  1029. text        dc.b    " THE UK CO-OPERATION ",13
  1030.         dc.b    "  MUSICDISK PROJECT  ",13
  1031.         dc.b    "CALLED -SONIC ATTACK-",13
  1032.         dc.b    "IS NEARING COMPLETION",13
  1033.         dc.b    "    AT LONG LAST!    ",13
  1034.         dc.b    -1,6
  1035. text2        dc.b    " SO, IF YOU ARE A UK ",13
  1036.         dc.b    " BASED MUSICIAN, AND ",13
  1037.         dc.b    "  WOULD LIKE TO GET  ",13
  1038.         dc.b    "   INVOLVED IN THE   ",13
  1039.         dc.b    "  PROJECT, WRITE TO  ",13
  1040.         dc.b    -1,6
  1041. text3        dc.b    "    * RED DEVIL *    ",13
  1042.         dc.b    "   47 MOXLEY ROAD    ",13
  1043.         dc.b    "      DARLASTON      ",13
  1044.         dc.b    "    WEST MIDLANDS    ",13
  1045.         dc.b    "      WS10  7RE      ",13
  1046.         dc.b    -1,10
  1047. text4         dc.b    "                     ",13
  1048.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1049.         dc.b    "CREDIT FOR THIS INTRO",13
  1050.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1051.         dc.b    "                     ",13
  1052.         dc.b    -1,4
  1053. text5        dc.b    "*********************",13
  1054.         dc.b    "    CODING BY NZO    ",13
  1055.         dc.b    "GRAPHICS BY RED DEVIL",13
  1056.         dc.b    "   MUSIC BY MUTLEY   ",13
  1057.         dc.b    "*********************",13
  1058.         dc.b    -1,5
  1059. text6        dc.b    "   CALL OUR BOARDS   ",13
  1060.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1061.         dc.b    "   GURUS DREAM WHQ   ",13
  1062.         dc.b    "     46-8-282760     ",13
  1063.         dc.b    "  9 NODES, 6.4 GIGS  ",13
  1064.         dc.b    -1,7
  1065. text7         dc.b    "  COMPLEX CORROSION  ",13
  1066.         dc.b    "    1-612-7730522    ",13
  1067.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1068.         dc.b    "  FORGOTTEN REALMS   ",13
  1069.         dc.b    "    44-272-696594    ",13
  1070.         dc.b    -1,7
  1071. text8        dc.b    "    EASTERN FRONT    ",13
  1072.         dc.b    "     358-PRIVATE     ",13
  1073.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1074.         dc.b    "    SECRET WORLD     ",13
  1075.         dc.b    "   49-30-885-4598    ",13
  1076.         DC.B    -1,7
  1077. text9        dc.b    "                     ",13
  1078.         dc.b    "  LOOK OUT FOR MORE  ",13
  1079.         dc.b    "  SMART PRODUCTIONS  ",13
  1080.         dc.b    "  FROM US VERY SOON  ",13
  1081.         dc.b    "                     ",13
  1082.         dc.b    -2,4
  1083.         EVEN
  1084.  
  1085. *        'a' = Dual Crew Logo 
  1086. *        '#' = 'Of'
  1087. *        'b' = '®'
  1088.  
  1089. scrollpoint    dc.l    scroller0
  1090. scroller0    dc.b    "                                                   "
  1091. scroller    dc.b    "WELCOME TO A NEW PRODUCTION FROM     a DUAL CREW a   "
  1092.         dc.b    "THIS IS JUST TO ANNOUNCE THAT WE ARE STILL LOOKING "
  1093.         DC.B    "FOR ANY EXCELLENT UK MUSICIAN THAT HASN'T SUBMITTED "
  1094.         DC.B    "A TUNE FOR SONIC ATTACKb. IF YOU'DE LIKE TO GET "
  1095.         DC.B    "INVOLVED, WRITE TO THE ADDRESS ABOVE NOW!             "
  1096.         dc.b    "GREETINGS FROM RED DEVIL TO ZEPHYR, IRIDON AND ALL THE SHINING "
  1097.         DC.B    "IVE SPOKEN WITH RECENTLY...    DWEL, TOM COPPER#ALCATRAZ   "
  1098.         DC.B    "MYSTIK, KREST, JUDGE DROKK#ANARCHY   FAIRFAX#ANDROMEDA   "
  1099.         DC.B    "MANX, MARVIN, WINTERMUTE, ICE, BLACK CAT, HYDRO, FAST EDDIE, "
  1100.         DC.B    "POT NOODLE, CEVIN KEY, MASCOT, MYRMURTH, THARGOID#ANTHROX   "
  1101.         DC.B    "PRAYER#BANAL PROJECTS   STRATOS, DHM#COMPLEX   NIGHTSHADE, "
  1102.         dc.b    "ONE, OHIO#CRUSADERS   WINGER, LEVIATHON, MAVE#CRYSTAL   "
  1103.         DC.B    "ELWOOD, DEXTER#DELICIOUS   HYBRID, FLIGHTY, NO.5, INTREQ, "
  1104.         dc.b    "YAZ, FLAME#DIGITAL   ASSASSIN, MINT SAUCE#DIMENSION X   "
  1105.         DC.B    "RA#DREAMDEALERS   REFLEX, RCF, ZIPTRONIX#ELEVATION   "
  1106.         DC.B    "GROO AND RUFFERTO#ESSENCE   MATTI JE TEPPO#FAIRLIGHT   "
  1107.         DC.B    "SHERWIN#FRAXION   CALVIN#GENOCIDE   JAY ONE, HOLLYWOOD, "
  1108.         dc.b    "SEC4#JETSET   RWO#KEFRENS   THE PRIDE, MAJIC MUSHROOM, "
  1109.         dc.b    "PARADROID, KR33, NUKE, FACET, DAN#LEMON.   PAZZA#LSD   "
  1110.         DC.B    "TDK#MELON DEZIGN   RADAR, LINEBACKER, ACTION MAN#MINISTRY   "
  1111.         DC.B    "RATTLE, RAMJET#PMC   MAT, WONDERBOY, RAIDER, RAZOR "
  1112.         dc.b    "BLADE#RAZOR 1911   JOHN, KRIS, META#REBELS   MUTLEY#RELAY   "
  1113.         DC.B    "SPYCATCHER, HI-LITE, BUTCH, ZODIAK#SCOOPEX   "
  1114.         DC.B    "COUGAR, CRUISER#SANITY   D-SIGN, WOTW, D-ZIRE, BAROCK, "
  1115.         dc.b    "RAVE#SILENTS   COAXIAL#SKID ROW   AXE!#SUBMISSION   "
  1116.         DC.B    "DENNIS T#SUPPLEX   ALI BABA#TARKUS TEAM   GRAY ONE, PEACHY, "
  1117.         dc.b    "FADE ONE, FORNAX#TRSI   HEIN DESIGN#VISION   DARKIE#WIZZCAT                    "
  1118.         dc.b    -1
  1119.         EVEN
  1120.  
  1121. waitpage    dc.w    0
  1122. textpos        dc.w    0,0
  1123. fadebits    dc.b    0,0
  1124. pauser        dc.w    2*40
  1125. changing    dc.w    0
  1126.  
  1127. scrolled    dc.w    0
  1128. sprxpos        dc.w    0        ;sprite x position
  1129. sprypos        dc.w    0        ;sprite y position
  1130. sprframe    dc.w    0        ;current sprite frame
  1131. framecount    dc.w    0        ;frame count for speed..
  1132.  
  1133. wave_chan1    dc.w    0
  1134. wave_chan2    dc.w    0
  1135. wave_freq1    dc.w    0
  1136. wave_freq2    dc.w    0
  1137. wave_crp    dc.w    0,0
  1138. wavecols    dc.l    cols2,cols1
  1139. fx_gfx        dc.l    fx_gfx1
  1140. offset        dc.w    0
  1141. clist_offset1    dc.l    0
  1142. clist_offset2    dc.l    0
  1143. gfx_offset    dc.l    143*44
  1144. blank        REPT    16
  1145.         dc.w    $015
  1146.         ENDR
  1147. allow_so    dc.w    0
  1148. allow_wr    dc.w    0
  1149. allow_co    dc.w    0
  1150. allow_cl    dc.w    0
  1151. allow_sc    dc.w    0
  1152. npause        dc.w    0
  1153. npausetemp    dc.w    0
  1154. copy_offset    dc.l    0
  1155. savepal        ds.w    4
  1156.  
  1157. vbar_datalist2    dc.w    0
  1158.         dc.w    11,21,-8,-7
  1159.         dc.w    257,-245,-255,-259
  1160.         dc.w    -15,15,-15,-14
  1161.         dc.w    -276,2,213,4
  1162.         dc.w    -260,4,249,-11
  1163.         dc.w    -2,-14,-19,-5
  1164.         dc.w    3,1,17,-11
  1165.         dc.w    7,-11,2,6
  1166.         dc.w    -251,221,2,-19
  1167.         dc.w    -11,251,-18,-259
  1168.         dc.w    18,18,18,-18
  1169.         dc.w    -9,-4,2,-1
  1170.         dc.w    -11,2,-1,3
  1171.         dc.w    -255,5,215,3
  1172.         dc.w    7,-275,2,256
  1173.         dc.w    9,-255,11,250
  1174.         dc.w    2,-3,-1,-1
  1175.         dc.w    -255,251,261,-257
  1176.         dc.w    -259,256,-5,-3
  1177.         dc.w    -251,253,258,-255
  1178.         dc.w    11,8,-15,-7
  1179.         dc.w    -3,5,3,-254
  1180.         dc.w    254,6,-250,-2
  1181.         dc.w    -255,-2,257,-1
  1182.         dc.w    28,-28,1,-9
  1183.         dc.w    13,-8,9,-19
  1184.         dc.w    254,7,-250,-3
  1185.         dc.w    47,-253,-43,258
  1186.         dc.w    47,-41,5,-3
  1187.         dc.w    -5,253,-2,-263
  1188.         dc.w    -251,-7,266,1
  1189.         dc.w    258,254,255,-257
  1190.         dc.w    249,-9,-257,6
  1191.         dc.w    -9,6,-1,-2
  1192.         dc.w    -3,5,3,-254
  1193.         dc.w    33
  1194.  
  1195. which_gfx    dc.b    0
  1196.         dc.b    0,0,1,0,0,1,0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1
  1197.         dc.b    1,1,0,0,1,0,0,1,0,1,1,1,1,0,1,0,1,0,1,0,0,1,1
  1198.         dc.b    -1
  1199.         EVEN
  1200. which_offset    dc.b    0
  1201.         dc.b    1,0,2,3,1,2,2,1,2,1,0,2,1,3,1,1,3,2,0,2,2,0,2
  1202.         dc.b    1,2,3,1,2,3,0,1,2,2,1,3,1,2,1,3,1,2,1,3,2,0,2
  1203.         dc.b    -1
  1204.         EVEN
  1205. col_offsets1    dc.w    0
  1206.         dc.w    40,80,120,40,0,20,16,100,50,32,10,0,12,60
  1207.         dc.w    70,90,100,30,20,100,200,20,10,40,0,70
  1208.         dc.w    16,32,48,56,64,80,96,110,120,130,140,150,160
  1209.         dc.w    0,50,76,170,180,32,160,40,132
  1210.         dc.w    -1
  1211. col_offsets2    dc.w    0
  1212.         dc.w    70,90,100,30,20,100,200,20,10,40,0,70
  1213.         dc.w    40,80,120,40,0,20,16,100,50,32,10,0,12,60
  1214.         dc.w    20,16,32,102,30,2,40,36,120,60,28,180
  1215.         dc.w    50,210,30,10,170
  1216.         dc.w    -1
  1217.         EVEN
  1218.  
  1219. pal        dc.w    $15,$eee,$ddd,$ccc,$bbb,$aaa,$999,$888
  1220.         dc.w    $677,$567,$256,$036,$03f,$02d,$00b,$002
  1221.  
  1222. copperlist    dc.w    $8e,$1b41,$90,$40f1,$92,$30,$94,$d8,$104,$24,$102,0
  1223.         dc.w    $100,$5200,$108,44*4-44,$10a,44*4-44
  1224. spritelist1    dc.w    $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
  1225.         dc.w    $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
  1226.  
  1227. bits1        dc.w    $e0,0,$e2,0,$e4,0,$e6,0,$e8,0,$ea,0,$ec,0,$ee,0
  1228.  
  1229. palette        dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0        
  1230.         dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0        
  1231. p16        dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0        
  1232.         dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0        
  1233.  
  1234. block1        ds.w    lines1*8    ;ends $cf09
  1235.  
  1236. fake        dc.w    $d009,$fffe,$100,$1200
  1237.         dc.w    $e0,0,$e2,0,$182,0
  1238.         Dc.w    $1a0,0,$1a2,$fff,$1a4,$ccc,$1a6,$888
  1239.         Dc.w    $1a8,$555,$1aa,$79f,$1ac,$38f,$1ae,$16d
  1240.  
  1241.         dc.w    $d109,$fffe,$100,$1200
  1242.         dc.w    $e0,0,$e2,0,$182,0
  1243.         Dc.w    $1b0,$249,$1b2,$227,$1b4,$fcb,$1b6,$f98
  1244.         Dc.w    $1b8,$c76,$1ba,$f22,$1bc,$c00,$1be,$800
  1245.  
  1246. block2        ds.w    lines2*8
  1247.         
  1248.         dc.w    $ffd9,$fffe,$100,$1200
  1249.  
  1250.         dc.w    $0009,$fffe,$100,$200,$108,4
  1251.         dc.w    $180,$fff,$182,$fc8,$184,$a84,$186,$542
  1252.         dc.w    $192,$18
  1253.         dc.w    $0109,$fffe,$100,$3600
  1254.         dc.w    $180,$4
  1255. bits2        dc.w    $e0,0,$e2,0,$e8,0,$ea,0
  1256.  
  1257. blockblur    ds.w    lines4*6
  1258.  
  1259.         dc.w    $2009,$fffe,$100,$1200,$180,$fff
  1260.         dc.w    $108,0
  1261.  
  1262. block3        ds.w    lines3*10
  1263.         dc.w    $ffff,$fffe
  1264.         dc.w    $ffff,$fffe
  1265.  
  1266. copperlist2    dc.w    $8e,$1b41,$90,$40f1,$92,$30,$94,$d8,$104,$24,$102,0,$96,$8220
  1267.         dc.w    $100,$4200,$108,44*4-44,$10a,44*4-44,$180,$015
  1268. spritelist2    dc.w    $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
  1269.         dc.w    $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
  1270.         dc.w    $1fc,0
  1271.         Dc.w    $1a0,0,$1a2,$fff,$1a4,$ccc,$1a6,$888
  1272.         Dc.w    $1a8,$555,$1aa,$79f,$1ac,$38f,$1ae,$16d
  1273.         Dc.w    $1b0,$249,$1b2,$227,$1b4,$fcb,$1b6,$f98
  1274.         Dc.w    $1b8,$c76,$1ba,$f22,$1bc,$c00,$1be,$800
  1275.  
  1276. bits1_1        dc.w    $e0,0,$e2,0,$e4,0,$e6,0,$e8,0,$ea,0,$ec,0,$ee,0
  1277.  
  1278. logopal        dc.w    $180,$015,$182,$015,$184,$015,$186,$015,$188,$015,$18a,$015,$18c,$015,$18e,$015
  1279.         dc.w    $190,$015,$192,$015,$194,$015,$196,$015,$198,$015,$19a,$015,$19c,$015,$19e,$015        
  1280.  
  1281.         dc.w    $ffd9,$fffe,$100,$200
  1282.  
  1283. upline        dc.w    $1e09,$fffe,$180,$015
  1284.         dc.w    $1f09,$fffe,$180,$015
  1285.  
  1286.         dc.w    $2009,$fffe
  1287. cline        ds.l    59+1
  1288.  
  1289.         dc.w    $ffff,$fffe
  1290.         dc.w    $ffff,$fffe
  1291.  
  1292.         Section    'Non-chip',DATA
  1293.  
  1294.         incdir    '
  1295. cols1        incbin    bigcopper_cols
  1296. cols2        incbin    smallcopper_cols
  1297. colzend        EVEN
  1298. sine        incbin    sine(512*300).dat
  1299.  
  1300.         Section    'GFX',DATA_C
  1301.  
  1302.         ds.l    (44*144)/4
  1303. fx_gfx1        incbin    sin1.352x144x1
  1304.         ds.l    (44*144)/4
  1305. fx_gfx2        incbin    sin2.352x144x1
  1306. font1        incbin    safont1.944x30x2.bit
  1307. font2        incbin    safont2.944x16x4.ilbm
  1308. logo        incbin    dc_logo352x85x4.ilbm
  1309. logoend        EVEN
  1310. spritedata    incbin    sonic.dat
  1311.  
  1312.         Section    'Music',DATA_C
  1313.  
  1314.         IFNE    music
  1315. mt_data        incbin    mod.shitty-beeper
  1316.         ENDC
  1317.  
  1318.         Section    'Screens',BSS_C
  1319.  
  1320. scrollbuffer    ds.l    (48*32*2)/4
  1321. charbuffer    ds.l    (44*4)*80
  1322. screen        ds.l    $4010
  1323.  
  1324.